home *** CD-ROM | disk | FTP | other *** search
- # Jedi Knight Missions Cog Script
- #
- # CPEL.COG
- #
- # EXPLOSION SCRIPT - Carbonite Pellet
- #
- # [RF]
- #
- # (C) 1997 LucasArts Entertainment Co. All Rights Reserved
-
- symbols
-
- message created
-
- template goob=concrifle local
- template gunk=+carbchunks local
-
- sound outSound=cpelletexplo.wav local
-
- thing pellet local
- thing frozen local
-
- vector frozenpos local
- vector pelletpos local
-
- int pelletdist local
-
- flex freezeradius=10.0 local
- flex maxfreezetime=10.0 local
- flex freezetime local
-
-
- end
-
- # ========================================================================================
-
- code
-
- created:
- // Print("Pellet COG Running!");
-
- pellet = GetSenderRef();
-
- PlaySoundThing(outSound, pellet, 1.0, -1, -1, 0);
-
- // CreateThing(goob, pellet);
- CreateThingNR(gunk, pellet);
-
- pelletpos = GetThingPos(pellet);
-
- // Do we need to freeze ourselves?
- frozen = GetLocalPlayerThing();
- frozenpos = GetThingPos(frozen);
-
- pelletdist = VectorDist(frozenpos, pelletpos) * 10;
-
- if (pelletdist < freezeradius)
- // if (!(GetActorFlags(frozen) & 0x100))
- if (HasLOS(frozen, pellet))
- {
- freezetime = (maxfreezetime * (freezeradius - pelletdist)) / freezeradius;
-
- // Print("Froze myself!");
- // SkillTarget(frozen, pellet, 1035, freezetime);
- SendMessageEx(GetThingClassCog(frozen), skill, 1035, freezetime, 0, 0);
- // SendMessage(GetThingClassCog(frozen), user7);
- }
-
- // If we are a client, stop here.
- if (IsMulti())
- if (!IsServer())
- {
- DestroyThing(pellet);
- Return;
- }
-
- // print("Looking...");
-
- // Check for other actor targets.
- frozen = FirstThingInView(pellet, 180, freezeradius, 0x004);
-
- while (frozen != -1)
- {
- // print("Found something...");
-
- // Don't mess with inanimate objects.
- if (!(GetActorFlags(frozen) & 0x100))
- // // Don't mess with other players.
- // if (!(GetThingFlags(frozen) & 0x400))
- // Double check LOS.
- {
- if (HasLOS(frozen, pellet))
- {
- frozenpos = GetThingPos(frozen);
-
- pelletdist = VectorDist(frozenpos, pelletpos) * 10;
-
- freezetime = (maxfreezetime * (freezeradius - pelletdist)) / freezeradius;
-
- // print("Freezing Someone!");
- // printflex(freezeTime);
-
- if (freezetime > 0) // Sanity check.
- {
- // Give the thing a chance to react.
- if (SendMessageEx(GetThingClassCog(frozen), skill, 1035, freezetime, frozen, 0) != 17)
- {
- // Before going into the default handler (in WEAP_CARBGUN_M.COG)
- SendMessageEx(GetInvCog(GetLocalPlayerThing(), 125), user0, 1, freezetime, frozen, 0);
- }
- }
-
- // if(GetThingType(frozen) == 10) // OTHER PLAYER
- // SkillTarget(frozen, pellet, 1035, freezetime);
- // else
- }
- // else
- //{
- //print("No LOS!");
- //}
- }
- // else
- // {
- // print("Thing Flags: ");
- // printint(GetThingFlags(frozen));
- // }
- // else
- // {
- // print("Actor Flags: ");
- // printint(GetActorFlags(frozen));
- // }
-
- frozen = NextThingInView();
- }
-
- // Buh bye.
- DestroyThing(pellet);
- Return;
- end
-